home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / CodeWarrior Lite / Metrowerks C⁄C++ Lite / Headers / ANSI Headers / ptrdynarray < prev    next >
Encoding:
Text File  |  1994-10-20  |  3.7 KB  |  114 lines  |  [TEXT/MMCC]

  1. // ptrdynarray standard header
  2. #ifndef _PTRDYNARRAY_
  3. #define _PTRDYNARRAY_
  4. #include <dynarray>
  5.  
  6. #if __MWERKS__
  7. #pragma options align=mac68k
  8. #endif
  9.  
  10.   // template class ptrdynarray
  11. template<class _T> class ptrdynarray
  12.  : public dynarray<void *> {
  13. public:
  14.  ptrdynarray()
  15.   : dynarray<void *>() {}
  16.  ptrdynarray(size_t _N, capacity _C)
  17.   : dynarray<void *>(_N, _C) {}
  18.  ptrdynarray(const ptrdynarray<_T>& _X)
  19.   : dynarray<void *>(_X) {}
  20.  ptrdynarray(_T *_X, size_t _N = 1)
  21.   : dynarray<void *>((void *)_X, _N) {}
  22.  ptrdynarray(_T **_S, size_t _N = 1)
  23.   : dynarray<void *>((void **)_S, _N) {}
  24.  ptrdynarray<_T>& operator=(const ptrdynarray<_T>& _R)
  25.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  26.    operator=((const dynarray<void *>&)_R)); }
  27.  ptrdynarray<_T>& operator+=(const ptrdynarray<_T>& _R)
  28.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  29.    operator+=((const dynarray<void *>&)_R)); }
  30.  ptrdynarray<_T>& operator+=(_T *_R)
  31.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  32.    operator+=((void *)_R)); }
  33.  ptrdynarray<_T>& append(_T *_X, size_t _N = 1)
  34.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  35.    append((void *)_X, _N)); }
  36.  ptrdynarray<_T>& append(_T **_S, size_t _N = 1)
  37.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  38.    append((void **)_S, _N)); }
  39.  ptrdynarray<_T>& assign(_T *_X, size_t _N = 1)
  40.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  41.    assign((void *)_X, _N)); }
  42.  ptrdynarray<_T>& assign(_T **_S, size_t _N = 1)
  43.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  44.    assign((void **)_S, _N)); }
  45.  ptrdynarray<_T>& insert(size_t _P,
  46.   const ptrdynarray<_T>& _X)
  47.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  48.    insert(_P, (const dynarray<void *>&)_X)); }
  49.  ptrdynarray<_T>& insert(size_t _P, _T *_X, size_t _N = 1)
  50.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  51.    insert(_P, (void *)_X, _N)); }
  52.  ptrdynarray<_T>& insert(size_t _P, _T **_S, size_t _N = 1)
  53.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  54.    insert(_P, (void **)_S, _N)); }
  55.  ptrdynarray<_T>& remove(size_t _P = 0, size_t _N = NPOS)
  56.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  57.    remove(_P, _N)); }
  58.  ptrdynarray<_T>& sub_array(ptrdynarray<_T>& _X, size_t _P,
  59.   size_t _N = NPOS)
  60.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  61.    sub_array(_X, _P, _N)); }
  62.  void swap(ptrdynarray<_T>& _X)
  63.   {dynarray<void *>::swap(_X); }
  64.  _T* get_at(size_t _P) const
  65.   {return ((_T *)dynarray<void *>::get_at(_P)); }
  66.  void put_at(size_t _P, _T *_X)
  67.   {dynarray<void *>::put_at(_P, (void *)_X); }
  68.  _T *& operator[](size_t _P)
  69.   {return ((_T *&)dynarray<void *>::operator[](_P)); }
  70.  _T *const& operator[](size_t _P) const
  71.   {return ((_T *&)dynarray<void *>::operator[](_P)); }
  72.  _T **base()
  73.   {return ((_T **)dynarray<void *>::base()); }
  74.  const _T **base() const
  75.   {return ((const _T **)dynarray<void *>::base()); }
  76.  size_t length() const
  77.   {return (dynarray<void *>::length()); }
  78.  void resize(size_t _N)
  79.   {dynarray<void *>::resize(_N); }
  80.  void resize(size_t _N, _T *_X)
  81.   {dynarray<void *>::resize(_N, (void *)_X); }
  82.  size_t reserve() const
  83.   {return (dynarray<void *>::reserve()); }
  84.  void reserve(size_t _N)
  85.   {dynarray<void *>::reserve(_N); }
  86.  };
  87.   // template operators
  88. template<class _T> ptrdynarray<_T>
  89.  operator+(const ptrdynarray<_T>& _L,
  90.   const ptrdynarray<_T>& _R)
  91.  {return (ptrdynarray<_T>(_L) += _R); }
  92. template<class _T> ptrdynarray<_T>
  93.  operator+(const ptrdynarray<_T>& _L, _T *_R)
  94.  {return (ptrdynarray<_T>(_L) += _R); }
  95. template<class _T> ptrdynarray<_T>
  96.  operator+(_T *_L, const ptrdynarray<_T>& _R)
  97.  {return (ptrdynarray<_T>(_L) += _R); }
  98.  
  99. #if __MWERKS__
  100. #pragma options align=reset
  101. #endif
  102.  
  103. #endif
  104.  
  105. /*
  106.  * Copyright (c) 1994 by P.J. Plauger.  ALL RIGHTS RESERVED. 
  107.  * Consult your license regarding permissions and restrictions.
  108.  */
  109.  
  110. /* Change log:
  111.  *94Oct03 Version received from PlumHall
  112.  *94Oct07 Inserted MW changes.
  113.  */
  114.